Storm3D Exporter V1.0  
=====================


Description   : SoftImage plug-in exporter to convert SoftImage databases to
                Storm3D .SOD format for use in Star Trek: Armada.

Requirements  : SoftImage 3.7 or 3.8
		Windows NT4 SP3 or later.

Author        : Steve Williams


Audience
========
The Storm3D Exporter plug-in is intended for use by experienced 
SoftImage 3D artists for the purpose of creating and exporting 
low polygon artwork for use in Star Trek: Aramda.


Overview
========
The Storm3D Exporter is a plug in for SoftImage which exports .SOD 
(Storm3D Object Definition) files for use in Star Trek : Armada. 
The Storm3D Exporter is an internal Activision tool which is being made
available to the Armada mod community for the purposes of generating
new artwork. The Storm3D Exporter is not supported by Activision. 


Installation
============
There are two versions of the exporter for versions 3.7 & 3.8 of SoftImage
respectively. Install the appropriate files for your version of SoftImage.
SoftImage v. 3.9 or later are not currently supported.

To install the plug-in copy the appropriate two files as follows :-

1. [version]/Storm3D_Exporter.dll -> [Soft]\3d\custom\bin
2. Storm3D_Exporter.cus -> [Soft]\3d\custom\tools

[Soft] is the directory you've installed SoftImage to.
[version] is the version of SoftImage you're using - either 3.7 or 3.8.

The exporter will be available the next time you run SoftImage and is 
accessed through the Tools->Export menu in SoftImage.

To export an object, the entire object should consist of *one* hierarchy.
Before running the exporter, ENSURE THAT *ONLY* THE ROOT NODE OF THE HIERARCHY 
IS SELECTED. If there are any problems during export, they should be reported 
in the SoftImage message window.

Once exported, the Storm3D Tool can be used for previewing exported .SOD 
databases. Note that Storm3D Tool requires DirectX7, and can only be run
on Windows 95, 98 or 2000. Many SoftImage users however require Windows NT4
to run Soft. This means you either need two machines, or dual boot from one 
machine. Yes, I know that sucks ... 


Example - Export a cube
=======================

Once the exporter is installed perform the following test to ensure sure all is well :-

1. Run SoftImage.
2. Soft: Create->Primitive->Cube (default size should be OK). 
3. Ensure the cube is selected.
4. Soft: Export->Storm3D Exporter
5. Export the cube as test.sod (or whatever), specify the location using the exporter
dialog box file selector.
6. Load test.sod into Storm3D Tool & verify it looks correct.
7. Your cube battleship is ready for incorporating into Armada.


Lighting materials considerations
=================================
Materials are shared between models, so it is important that they are named
correctly to avoid undesired sharing & to reduce the duplication of identical
materials. A material whose name begins with 'team' will be treated as a team 
colour material, and modified accordingly in game to reflect ownership of the
object.

Multiple materials per model
=============================
Try to keep the no. materials per object as low as possible for performance reasons. 
Merge seperate models together where possible too. This will improve performance.

Multiple Textures per model
===========================
Storm3D currently only supports one texture per model. If you need more, split
the geometry into two or more sub-models & make one the parent of the others.


Hierarchy Considerations
========================
A correctly organized hierarchy is the key to getting new artwork to function correctly
in Armada. Examine the hierarchy of existing Armada artwork in the Storm3D Tool to
understand how to achieve this. For example, you must set up hardpoint null nodes,
damage sprite nodes, particle emitters, flashing lights, lods, etc. correctly.

SOD Filenames
=============
Try to keep the length of exported SOD filenames as short as possible 
(around 10-12 characters).

Sprite Nodes
============
Sprite nodes are defined by creating a null null node and prefixing it's identifier
with with 's_'. Ensure the Z axis is oriented perpendicular to the desired sprite. 
Sprite nodes are defined in Armada's .spr files (@sprite_node entries). 
Note that most of the sprite nodes defining ship running lights are defined in 
lights.spr.

Example:  To add a red flashing strobe light, we can use the sprite node redstrobe.
Create a null node, and rename it to s_redstrobe . Ensure the new node is corrently
parented within the hierarchy - look at existing artwork for further details.

If you need more than one of the same type of sprite node use the following 
naming convention :-

s_redstrobe_1,  s_redstrobe_2, etc.

Particle emitters
=================
Used mainly to indicate damage. Naming convention similar to sprite nodes, except
the prefix is e_ .

Example : Null with identifier e_smoke_1 to add a smoke particle emitter. The
particle emitter's characteristics are defined in emitter.spr.

Command nodes
=============
Command nodes add extra information to mesh (model) nodes. You add commands
to a mesh (model) node by adding a child null node with the prefix 'c_' to the
mesh. Command nodes are not exported, they are just used to add extra information
to mesh/models. Do not attach command nodes to non mesh nodes at this time.


The following commands are currently supported :-

c_nocull - Disable backface culling on a particular model by. Avoid unnecessary
	   usage of this option as adding this command to an object will double
           it's polygon count, which will have performance implications.
	   It is, however preferable to have a low poly model with an alpha channel 
	   and backface culling disabled, rather than one high poly count model.

c_nogeom - Ignore model(s) during export. Any model this command is attached to will
	   not be exported.

c_tm_xxx - Texture material to use e.g. c_tm_additive to make the mesh have
a transparent (additive) glow.

You can use the _nn method when more than one of the same type of node
is required. E.g. c_nocull_1, c_nocull_2, etc. This is necessary because
SoftImage does not allow you to give more than one node the same name.

Attaching texture (flipbook) animation command nodes
====================================================

Simple   : c_anim_[identifier]_nn
Advanced : c_anim_[identifier]_[playback offset]_nn

Examples : a) c_anim_tex4x4_0.3_1 
           b) c_anim_tex4x4_2

a) Play a 4x4 flipbook animation through the texture coordinates
of this model's geometry. The animation parameters are defined in
tex_anim.spr

b) As (a), but with a playback offset 0.3 seconds. The playback
offset allows you to play the same animation on multiple meshes
with an animation offset on each one for a variety of special effects.


Geometry & Texturing Guidelines
===============================
The SOD format currently only supports geometry stored as polygon meshes.
If you want to export art that incorporates other geometry types such as
bezier or nurb patches, you'll need to convert it to polygons before you
export it. If the exporter still has problems, try performing a 'convert'
to convert all n-gons to triangles. Ensure all texture coordinates use UV 
mapping.


Texture Conversion
==================
Textures must have dimensions which are powers of 2 & square. Note that texture
size limitations are 256x256 for older video cards and 2048x2048 for newer ones. 
Textures must be stored in uncompressed .tga format. Name your .tga files the same 
way as your textures are named in SoftImage. There are numberous third party
tools available for converting between texture formats.

Convert to either 24 bit or 32 bit .tga (targa) format, depending on whether you use
an alpha channel or not. Copy the converted texture(s) to <Armada>\textures\rgb.


Mipmaps
=======
Mipmaps are filtered versions of the largest texture which are used to prevent sampling 
'noise' when an object is small. You should create mipmaps for best results. The dimensions
of the mipmaps are decreasing powers of two versions of the base .tga file. 

Let's take an existing texture (fdestroy) & it's associated mipmaps as an example :- 

Notice there are a number of files with the same base name : fdestroy.tga, fdestroy.1, fdestroy.2, fdestroy.3, etc. 
These are the mipmaps and are also in tga format.

The largest mipmap is the .tga file, the others are powers of 2 mipmaps below that.

fdestroy.tga is 256x256
fdestroy.1 is 128x128
fdestroy.2 is 64x64
... etc.


Make sure all the mips follow in order and that none are out of sequence, or Storm3D won't load them.
Make sure they are all in the same format, either 24 or 32 bit.
Storm3D won't load compressed .tga files. Make sure you save the files without compression.

